package de.homelabs.bookstore.persistence.memory;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import de.homelabs.bookstore.domain.Autor;
import de.homelabs.bookstore.domain.Buch;
import de.homelabs.bookstore.persistence.IBuchDAO;

@Service("buchMemoryDAO")
public class BuchMemoryDAO implements IBuchDAO {

	@Autowired
	private InMemoryDataProvider dataProvider;
	
	/*
	 * (non-Javadoc)
	 * @see de.homelabs.bookstore.persistence.IBuchDAO#holeAlleBuecher()
	 */
	public List<Buch> holeAlleBuecher() {
		return dataProvider.getBuecher();
	}

	/*
	 * (non-Javadoc)
	 * @see de.homelabs.bookstore.persistence.IBuchDAO#sucheBuchNachId(int)
	 */
	public Buch sucheBuchNachId(int id) {
		//durchsuche buecher
		for (Buch buch : dataProvider.getBuecher()){
			if (buch.getId() == id){
				return buch;
			}
		}
		
		//keins gefunden
		return null;
	}

	/*
	 * (non-Javadoc)
	 * @see de.homelabs.bookstore.persistence.IBuchDAO#sucheBuchNachISBN(java.lang.String)
	 */
	public Buch sucheBuchNachISBN(String isbn) {
		//durchsuche buecher
		for (Buch buch : dataProvider.getBuecher()){
			if (buch.getIsbn().equalsIgnoreCase(isbn)){
				return buch;
			}
		}
		
		//keins gefunden
		return null;
	}

	/*
	 * (non-Javadoc)
	 * @see de.homelabs.bookstore.persistence.IBuchDAO#sucheBuchNachTitel(java.lang.String)
	 */
	public List<Buch> sucheBuchNachTitel(String titel) {
		//rueckgabeList
		List<Buch> buecher = new ArrayList<Buch>();
		
		//durchsuche buecher
		for (Buch buch : dataProvider.getBuecher()){
			if (buch.getTitle().contains(titel)){
				buecher.add(buch);
			}
		}
		
		//Liste zurueck
		return buecher;
	}

	/*
	 * (non-Javadoc)
	 * @see de.homelabs.bookstore.persistence.IBuchDAO#sucheBuchNachAutor(de.homelabs.bookstore.domain.Autor)
	 */
	public List<Buch> sucheBuchNachAutor(Autor autor) {
		//rueckgabeList
		List<Buch> buecher = new ArrayList<Buch>();
		
		//durchsuche buecher
		for (Buch buch : dataProvider.getBuecher()){
			if (buch.getAutoren().contains(autor)){
				buecher.add(buch);
			}
		}
		
		//Liste zurueck
		return buecher;
	}

	/*
	 * (non-Javadoc)
	 * @see de.homelabs.bookstore.persistence.IBuchDAO#speichereBuch(de.homelabs.bookstore.domain.Buch)
	 */
	public Buch speichereBuch(Buch buch) {
		return dataProvider.addBuch(buch);
	}

}
